1. Field of the Invention
This invention relates to data storage in OLE systems.
2. Description of the Prior Art
Some computer-based data processing systems make use of a xe2x80x9ccorexe2x80x9d computer program and a number of possible program modules or xe2x80x9cplug-insxe2x80x9d which can be loaded when required.
One way in which the various parts of the data processing system can communicate with one another is the so-called xe2x80x9cObject Linking and Embeddingxe2x80x9d (OLE) protocol, described in the book, xe2x80x9cUnderstanding ActiveX and OLExe2x80x9d, David Chappell, Microsoft Press, 1996.
In the OLE system a software designer can implement different sections of a computer program as so-called xe2x80x9cCOM1 objectsxe2x80x9d. Each COM object supports one or more COM xe2x80x9cinterfacesxe2x80x9d, each including a number of xe2x80x9cmethodsxe2x80x9d. A method is a function or procedure to carry out a specific action. COM methods can be called by software using that COM object. The system is restricted so that other parts of the software (so-called xe2x80x9cclientsxe2x80x9d) using a COM object can do so only via the defined interfacesxe2x80x94so they cannot directly access program code or data within the object other than via the defined COM interfaces.
1 Component Object Model 
One example of a data processing system in which this type of structure can be useful is a computer-based video special effects system. In such a system, the user can generally set up a composite special effect to be applied to a video sequence by selecting a succession of effects modules from a large number of available modules. For example, a sequence of effects set up by a user might comprise:
(i) image loader
(ii) motion tracker
(iii) lighting effect linked to motion tracking and image loader
(iv) image realignment linked to motion tracking and image loader
Each of these effects can be implemented as a program module or plug-in (a COM object), with data being routed between the modules under the overall control of a core program (one or more objects capable of presenting COM interface(s) as required to communicate with the plug-ins). So, the interfaces between the core and plug-in programs are defined under the COM system, but beyond that level the plug-in designer is generally free to implement the methods required under those interfaces in any appropriate way.
In a system of this type employing multiple COM objects, it is generally considered undesirable that each object should save its working or results data in a separate data file. Indeed, if this discussion went to a deeper level, it would be clear that such an arrangement would go against much of the reasoning which led to the establishment of the OLE system. Instead, data in this type of system is stored by all of the objects in a single file or xe2x80x9ccompound documentxe2x80x9d, but with an ordered structure within that compound document.
Basically, inside the compound document, a structure analogous to a file and directory structure is provided. The equivalent of a directory is a so-called xe2x80x9cstoragexe2x80x9d, and the analogy of a file is a so-called xe2x80x9cstreamxe2x80x9d. Each compound document contains a root storage, below which is a familiar tree structure of storages and streams. The COM stream interface is simpler than the COM storage interface, but of course the storage interface offers more flexibility.
In general, each COM object can be assigned either its own storage or its own stream in which to store its working data. However, in a hierarchical system such as the video special effects processor described above, where a core program coordinates operation of a number of plug-ins, the arrangement used in previous systems is to allocate a stream to each effects plug-in.
This invention provides data processing apparatus having:
a core object for controlling overall operation of the apparatus; and
a plurality of plug-in COM objects arranged to communicate with the core object;
the core object presenting a COM stream interface and a COM storage interface to the plug-in COM objects for use in storing and/or retrieving working data.
The invention recognizes that simply allocating either a storage or a stream to all plug-ins in a predetermined way places too many constraints on the design and operation of a plug-in object. Instead, a plug-in is allocated both a stream, so that it canxe2x80x94if desiredxe2x80x94store its working data in a straightforward manner, and a storage, so that it canxe2x80x94if desiredxe2x80x94store its working data under its own xe2x80x9cdirectoryxe2x80x9d arrangement of streams and storages. This choice can then be left to the plug-in designer.
The above, and other objects, features and advantages of this invention will be apparent from the following detailed description of illustrative embodiments which is to be read in connection with the accompanying drawings.